Solving Synchronization Problems